package org.ljy.lotterysystem.controller.handler;

import lombok.extern.slf4j.Slf4j;
import org.ljy.lotterysystem.common.errorcode.GlobalErrorCodeConstants;
import org.ljy.lotterysystem.common.exception.ControllerException;
import org.ljy.lotterysystem.common.exception.ServiceException;
import org.ljy.lotterysystem.common.pojo.CommonResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.*;

//统一异常返回
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    @ExceptionHandler(value = ServiceException.class)
    public CommonResult<?> serviceException(ServiceException e) {
        //1.打印日志
        //System.out.println("====================================");
        log.error("serviceException:"+e);
        //2.统一返回异常（给前端）
        return CommonResult.error(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),e.getMessage());
    }

    @ExceptionHandler(value = ControllerException.class)
    public CommonResult<?> controllerException(ControllerException e) {
        //System.out.println("====================================");
        //1.打印日志
        log.error("controllerException:"+e);
        //2.统一返回异常（给前端）
        return CommonResult.error(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),e.getMessage());
    }


    @ExceptionHandler(value = Exception.class)
    public CommonResult<?> Exception(Exception e) {
        //System.out.println("====================================");
        //1.打印日志
        log.error("controllerException:"+e);
        //2.统一返回异常（给前端）
        return CommonResult.error(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),e.getMessage());
    }





//    @ExceptionHandler(value = MethodArgumentNotValidException.class)
//    public CommonResult<?> Exception(MethodArgumentNotValidException e) {
//        StringBuilder stringBuilder = new StringBuilder();
//        e.getBindingResult().getFieldErrors().forEach((error)->{
//            stringBuilder.append( error.getDefaultMessage());
//        });
//        System.out.println("====================================");
//        //1.打印日志
//        log.error("Exception:"+e.getMessage());
//        //2.统一返回异常（给前端）
//        return CommonResult.error(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),stringBuilder.toString());
//    }



}
